Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Node / ReticulumProjects / Sideband.git / files / libs / able / able / dispatcher.py

Displaying Raw • Download


libs/able/able/dispatcher.py 2.0.1 (486a97e4) Text, 12.27 KB

Tff7b72from T7ee787typing Tff7b72import Te6edf3ListTb4b4b4, Te6edf3Optional

Tff7b72from T7ee787kivyT7ee787.T7ee787event Tff7b72import Te6edf3EventDispatcher
Tff7b72from T7ee787kivyT7ee787.T7ee787logger Tff7b72import Te6edf3Logger

Tff7b72from T7ee787able Tff7b72import Te6edf3WriteType
Tff7b72from T7ee787ableT7ee787.T7ee787adapter Tff7b72import Te6edf3AdapterManager
Tff7b72from T7ee787ableT7ee787.T7ee787filters Tff7b72import Te6edf3Filter
Tff7b72from T7ee787ableT7ee787.T7ee787permissions Tff7b72import Te6edf3DEFAULT_RUNTIME_PERMISSIONS
Tff7b72from T7ee787ableT7ee787.T7ee787queue Tff7b72import Te6edf3BLEQueueTb4b4b4, Te6edf3ble_taskTb4b4b4, Te6edf3ble_task_done
Tff7b72from T7ee787ableT7ee787.T7ee787scan_settings Tff7b72import Te6edf3ScanSettingsBuilder
Tff7b72from T7ee787ableT7ee787.T7ee787utils Tff7b72import Te6edf3force_convertible_to_java_array


Tff7b72class T56d364BLEErrorTb4b4b4:
T8b949e"""Raise Exception on attribute access"""

Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3msgTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffmsg Tff7b72= Te6edf3msg

Tff7b72def Tff7b72__getattr__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3nameTb4b4b4)Tb4b4b4:
Tff7b72raise Tf85149ExceptionTb4b4b4(Tff7b72selfTff7b72.Td2a8ffmsgTb4b4b4)


Tff7b72class T56d364BluetoothDispatcherBaseTb4b4b4(Te6edf3EventDispatcherTb4b4b4)Tb4b4b4:
Te6edf3__events__ Tff7b72= Tb4b4b4(
Ta5d6ff"Ta5d6ffon_deviceTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffon_scan_startedTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffon_scan_completedTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffon_servicesTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffon_connection_state_changeTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffon_bluetooth_adapter_state_changeTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffon_characteristic_changedTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffon_characteristic_readTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffon_characteristic_writeTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffon_descriptor_readTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffon_descriptor_writeTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffon_gatt_releaseTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffon_errorTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffon_rssi_updatedTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffon_mtu_changedTa5d6ff"Tb4b4b4,
Tb4b4b4)
Te6edf3queue_class Tff7b72= Te6edf3BLEQueue

Tff7b72def Tff7b72__init__Tb4b4b4(
Tff7b72selfTb4b4b4,
Te6edf3queue_timeoutTb4b4b4: Tffa657float Tff7b72= T79c0ff0.5Tb4b4b4,
Te6edf3enable_ble_codeTb4b4b4: Tffa657int Tff7b72= T79c0ff0xAB1ETb4b4b4,
Te6edf3runtime_permissionsTb4b4b4: Te6edf3OptionalTb4b4b4[Tffa657listTb4b4b4[Tffa657strTb4b4b4]Tb4b4b4] Tff7b72= Tff7b72NoneTb4b4b4, T8b949e# DEFAULT_RUNTIME_PERMISSIONS
Tb4b4b4)Tb4b4b4:
Tffa657superTb4b4b4(Te6edf3BluetoothDispatcherBaseTb4b4b4, Tff7b72selfTb4b4b4)Tff7b72.Td2a8ff__init__Tb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffqueue_timeout Tff7b72= Te6edf3queue_timeout
Tff7b72selfTff7b72.Td2a8ffenable_ble_code Tff7b72= Te6edf3enable_ble_code
Tff7b72selfTff7b72.Td2a8ffruntime_permissions Tff7b72= Tb4b4b4[
Tffa657strTb4b4b4(Te6edf3permissionTb4b4b4)
Tff7b72for Te6edf3permission Tff7b72in Tb4b4b4(
Te6edf3runtime_permissions
Tff7b72if Te6edf3runtime_permissions Tff7b72is Tff7b72not Tff7b72None
Tff7b72else Te6edf3DEFAULT_RUNTIME_PERMISSIONS
Tb4b4b4)
Tb4b4b4]
Tff7b72selfTff7b72.Td2a8ff_remote_device_address Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ff_set_ble_interfaceTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ff_set_queueTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ff_set_adapter_managerTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ff_set_ble_interfaceTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ff_ble Tff7b72= Te6edf3BLEErrorTb4b4b4(Ta5d6ff"Ta5d6ffBLE is not implemented for platformTa5d6ff"Tb4b4b4)

Tff7b72def Td2a8ff_set_queueTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffqueue Tff7b72= Tff7b72selfTff7b72.Td2a8ffqueue_classTb4b4b4(Te6edf3timeoutTff7b72=Tff7b72selfTff7b72.Td2a8ffqueue_timeoutTb4b4b4)

Tff7b72def Td2a8ff_set_adapter_managerTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Te6edf3AdapterManagerTb4b4b4(
Te6edf3bleTff7b72=Tff7b72selfTff7b72.Td2a8ff_bleTb4b4b4,
Te6edf3enable_ble_codeTff7b72=Tff7b72selfTff7b72.Td2a8ffenable_ble_codeTb4b4b4,
Te6edf3runtime_permissionsTff7b72=Tff7b72selfTff7b72.Td2a8ffruntime_permissionsTb4b4b4,
Tb4b4b4)Tff7b72.Td2a8ffinstallTb4b4b4(Tff7b72selfTb4b4b4)

Tff7b72def Td2a8ff_check_runtime_permissionsTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72return Tff7b72True

Tff7b72def Td2a8ff_request_runtime_permissionsTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72pass

Tf0883e@property
Tff7b72def Td2a8ffadapterTb4b4b4(Tff7b72selfTb4b4b4) Tff7b72-Tff7b72> Te6edf3OptionalTb4b4b4[Ta5d6ff"Ta5d6ffandroid.bluetooth.BluetoothAdapterTa5d6ff"Tb4b4b4]Tb4b4b4:
T8b949e"""Local device Bluetooth adapter.
Could be `None` if adapter is not enabled or access to the adapter is not granted yet.

:type: `BluetoothAdapter <https://developer.android.com/reference/android/bluetooth/BluetoothAdapter>`_
`Java object <https://pyjnius.readthedocs.io/en/stable/api.html#jnius.JavaClass>`_
"""

Tf0883e@property
Tff7b72def Td2a8ffgattTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
T8b949e"""GATT profile of the connected device

:type: BluetoothGatt Java object
"""
Tff7b72return Tff7b72selfTff7b72.Td2a8ff_bleTff7b72.Td2a8ffgetGattTb4b4b4(Tb4b4b4)

Tf0883e@property
Tff7b72def Td2a8ffbonded_devicesTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
T8b949e"""List of Java `android.bluetooth.BluetoothDevice` objects of paired BLE devices.

:type: List[BluetoothDevice]
"""
Tff7b72return Tb4b4b4[Tb4b4b4]

Tf0883e@property
Tff7b72def Td2a8ffnameTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
T8b949e"""Name of the Bluetooth adapter.

:setter: Set name of the Bluetooth adapter
:type: Optional[str]
"""
Te6edf3adapter Tff7b72= Tff7b72selfTff7b72.Td2a8ffadapter
Tff7b72return Te6edf3adapter Tff7b72and Te6edf3adapterTff7b72.Td2a8ffgetNameTb4b4b4(Tb4b4b4)

Tf0883e@nameTff7b72.Td2a8ffsetter
Tff7b72def Td2a8ffnameTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3valueTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ff_set_nameTb4b4b4(Te6edf3valueTb4b4b4)

Tff7b72def Td2a8ff_set_nameTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3valueTb4b4b4)Tb4b4b4:
Tff7b72pass

Tff7b72def Td2a8ffset_queue_timeoutTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3timeoutTb4b4b4)Tb4b4b4:
T8b949e"""Change the BLE operations queue timeout"""
Tff7b72selfTff7b72.Td2a8ffqueue_timeout Tff7b72= Te6edf3timeout
Tff7b72selfTff7b72.Td2a8ffqueueTff7b72.Td2a8ffset_timeoutTb4b4b4(Te6edf3timeoutTb4b4b4)

Tff7b72def Td2a8ffstart_scanTb4b4b4(
Tff7b72selfTb4b4b4,
Te6edf3filtersTb4b4b4: Te6edf3OptionalTb4b4b4[Te6edf3ListTb4b4b4[Te6edf3FilterTb4b4b4]Tb4b4b4] Tff7b72= Tff7b72NoneTb4b4b4,
Te6edf3settingsTb4b4b4: Te6edf3OptionalTb4b4b4[Te6edf3ScanSettingsBuilderTb4b4b4] Tff7b72= Tff7b72NoneTb4b4b4,
Tb4b4b4)Tb4b4b4:
T8b949e"""Start a scan for devices.
The status of the scan start are reported with
:func:`scan_started <on_scan_started>` event.

:param filters: list of filters to restrict scan results.
Advertising record is considered matching the filters
if it matches any of the :class:`able.filters.Filter` in the list.
:param settings: scan settings
"""
Tff7b72pass

Tff7b72def Td2a8ffstop_scanTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
T8b949e"""Stop the ongoing scan for devices."""
Tff7b72pass

Tff7b72def Td2a8ffconnect_by_device_addressTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3addressTb4b4b4: Tffa657strTb4b4b4, Te6edf3autoconnectTb4b4b4: Tffa657bool Tff7b72= Tff7b72FalseTb4b4b4)Tb4b4b4:
T8b949e"""Connect to GATT Server of the device with a given Bluetooth hardware address, without scanning.

:param address: Bluetooth hardware address string in "XX:XX:XX:XX:XX:XX" format
:param autoconnect: If True, automatically reconnects when available.
False = direct connect (default).
:raises:
ValueError: if `address` is not a valid Bluetooth address
"""
Tff7b72pass

Tff7b72def Td2a8ffconnect_gattTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3deviceTb4b4b4, Te6edf3autoconnectTb4b4b4: Tffa657bool Tff7b72= Tff7b72FalseTb4b4b4)Tb4b4b4:
T8b949e"""Connect to GATT Server hosted by device

:param device: BluetoothDevice Java object
:param autoconnect: If True, automatically reconnects when available.
False = direct connect (default).
"""
Tff7b72selfTff7b72.Td2a8ff_bleTff7b72.Td2a8ffconnectGattTb4b4b4(Te6edf3deviceTb4b4b4, Te6edf3autoconnectTb4b4b4)

Tff7b72def Td2a8ffclose_gattTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
T8b949e"""Close current GATT client"""
Tff7b72selfTff7b72.Td2a8ff_bleTff7b72.Td2a8ffcloseGattTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffdiscover_servicesTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
T8b949e"""Discovers services offered by a remote device.
The status of the discovery reported with
:func:`services <on_services>` event.

:return: true, if the remote services discovery has been started
"""
Tff7b72return Tff7b72selfTff7b72.Td2a8ffgattTff7b72.Td2a8ffdiscoverServicesTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffenable_notificationsTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3characteristicTb4b4b4, Te6edf3enableTff7b72=Tff7b72TrueTb4b4b4, Te6edf3indicationTff7b72=Tff7b72FalseTb4b4b4)Tb4b4b4:
T8b949e"""Enable/disable notifications or indications for a given characteristic

:param characteristic: BluetoothGattCharacteristic Java object
:param enable: enable notifications if True, else disable notifications
:param indication: handle indications instead of notifications
:return: True, if the operation was initiated successfully
"""
Tff7b72return Tff7b72True

Tf0883e@ble_task
Tff7b72def Td2a8ffwrite_descriptorTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3descriptorTb4b4b4, Te6edf3valueTb4b4b4)Tb4b4b4:
T8b949e"""Set and write the value of a given descriptor to the associated
remote device

:param descriptor: BluetoothGattDescriptor Java object
:param value: value to write
"""
Tff7b72if Tff7b72not Te6edf3descriptorTff7b72.Td2a8ffsetValueTb4b4b4(Te6edf3force_convertible_to_java_arrayTb4b4b4(Te6edf3valueTb4b4b4)Tb4b4b4)Tb4b4b4:
Te6edf3LoggerTff7b72.Td2a8fferrorTb4b4b4(Ta5d6ff"Ta5d6ffError on set descriptor valueTa5d6ff"Tb4b4b4)
Tff7b72return
Tff7b72if Tff7b72not Tff7b72selfTff7b72.Td2a8ffgattTff7b72.Td2a8ffwriteDescriptorTb4b4b4(Te6edf3descriptorTb4b4b4)Tb4b4b4:
Te6edf3LoggerTff7b72.Td2a8fferrorTb4b4b4(Ta5d6ff"Ta5d6ffError on descriptor writeTa5d6ff"Tb4b4b4)

Tf0883e@ble_task
Tff7b72def Td2a8ffwrite_characteristicTb4b4b4(
Tff7b72selfTb4b4b4, Te6edf3characteristicTb4b4b4, Te6edf3valueTb4b4b4, Te6edf3write_typeTb4b4b4: Te6edf3OptionalTb4b4b4[Te6edf3WriteTypeTb4b4b4] Tff7b72= Tff7b72None
Tb4b4b4)Tb4b4b4:
T8b949e"""Write a given characteristic value to the associated remote device

:param characteristic: BluetoothGattCharacteristic Java object
:param value: value to write
:param write_type: specific write type to set for the characteristic
"""
Tff7b72selfTff7b72.Td2a8ff_bleTff7b72.Td2a8ffwriteCharacteristicTb4b4b4(
Te6edf3characteristicTb4b4b4, Te6edf3force_convertible_to_java_arrayTb4b4b4(Te6edf3valueTb4b4b4)Tb4b4b4, Tffa657intTb4b4b4(Te6edf3write_type Tff7b72or T79c0ff0Tb4b4b4)
Tb4b4b4)

Tf0883e@ble_task
Tff7b72def Td2a8ffread_characteristicTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3characteristicTb4b4b4)Tb4b4b4:
T8b949e"""Read a given characteristic from the associated remote device

:param characteristic: BluetoothGattCharacteristic Java object
"""
Tff7b72selfTff7b72.Td2a8ff_bleTff7b72.Td2a8ffreadCharacteristicTb4b4b4(Te6edf3characteristicTb4b4b4)

Tf0883e@ble_task
Tff7b72def Td2a8ffupdate_rssiTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
T8b949e"""Triggers an update for the RSSI from the associated remote device"""
Tff7b72selfTff7b72.Td2a8ff_bleTff7b72.Td2a8ffreadRemoteRssiTb4b4b4(Tb4b4b4)

Tf0883e@ble_task
Tff7b72def Td2a8ffrequest_mtuTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3mtuTb4b4b4: Tffa657intTb4b4b4)Tb4b4b4:
T8b949e"""Request to change the ATT Maximum Transmission Unit value

:param value: new MTU size
"""
Tff7b72selfTff7b72.Td2a8ffgattTff7b72.Td2a8ffrequestMtuTb4b4b4(Te6edf3mtuTb4b4b4)

Tff7b72def Td2a8ffon_errorTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3msgTb4b4b4)Tb4b4b4:
T8b949e"""Error handler

:param msg: error message
"""
Tff7b72selfTff7b72.Td2a8ff_ble Tff7b72= Te6edf3BLEErrorTb4b4b4(Te6edf3msgTb4b4b4) T8b949e# Exception for calls from another threads
Tff7b72raise Tf85149ExceptionTb4b4b4(Te6edf3msgTb4b4b4)

Tf0883e@ble_task_done
Tff7b72def Td2a8ffon_gatt_releaseTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
T8b949e"""`gatt_release` event handler.
Event is dispatched at every read/write completed operation
"""
Tff7b72pass

Tff7b72def Td2a8ffon_scan_startedTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3successTb4b4b4)Tb4b4b4:
T8b949e"""`scan_started` event handler

:param success: true, if scan was started successfully
"""
Tff7b72pass

Tff7b72def Td2a8ffon_scan_completedTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
T8b949e"""`scan_completed` event handler"""
Tff7b72pass

Tff7b72def Td2a8ffon_deviceTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3deviceTb4b4b4, Te6edf3rssiTb4b4b4, Te6edf3advertisementTb4b4b4)Tb4b4b4:
T8b949e"""`device` event handler.
Event is dispatched when device is found during a scan.

:param device: BluetoothDevice Java object
:param rssi: the RSSI value for the remote device
:param advertisement: :class:`Advertisement` data record
"""
Tff7b72pass

Tff7b72def Td2a8ffon_connection_state_changeTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3statusTb4b4b4, Te6edf3stateTb4b4b4)Tb4b4b4:
T8b949e"""`connection_state_change` event handler

:param status: status of the operation,
`GATT_SUCCESS` if the operation succeeds
:param state: STATE_CONNECTED or STATE_DISCONNECTED
"""
Tff7b72pass

Tff7b72def Td2a8ffon_bluetooth_adapter_state_changeTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3stateTb4b4b4)Tb4b4b4:
T8b949e"""`bluetooth_adapter_state_change` event handler
Allows the user to detect when bluetooth adapter is turned on/off.

:param state: STATE_OFF, STATE_TURNING_OFF, STATE_ON, STATE_TURNING_ON
"""

Tff7b72def Td2a8ffon_servicesTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3servicesTb4b4b4, Te6edf3statusTb4b4b4)Tb4b4b4:
T8b949e"""`services` event handler

:param services: :class:`Services` dict filled with discovered
characteristics
(BluetoothGattCharacteristic Java objects)
:param status: status of the operation,
`GATT_SUCCESS` if the operation succeeds
"""
Tff7b72pass

Tff7b72def Td2a8ffon_characteristic_changedTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3characteristicTb4b4b4)Tb4b4b4:
T8b949e"""`characteristic_changed` event handler

:param characteristic: BluetoothGattCharacteristic Java object
"""
Tff7b72pass

Tff7b72def Td2a8ffon_characteristic_readTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3characteristicTb4b4b4, Te6edf3statusTb4b4b4)Tb4b4b4:
T8b949e"""`characteristic_read` event handler

:param characteristic: BluetoothGattCharacteristic Java object
:param status: status of the operation,
`GATT_SUCCESS` if the operation succeeds
"""
Tff7b72pass

Tff7b72def Td2a8ffon_characteristic_writeTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3characteristicTb4b4b4, Te6edf3statusTb4b4b4)Tb4b4b4:
T8b949e"""`characteristic_write` event handler

:param characteristic: BluetoothGattCharacteristic Java object
:param status: status of the operation,
`GATT_SUCCESS` if the operation succeeds
"""
Tff7b72pass

Tff7b72def Td2a8ffon_descriptor_readTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3descriptorTb4b4b4, Te6edf3statusTb4b4b4)Tb4b4b4:
T8b949e"""`descriptor_read` event handler

:param descriptor: BluetoothGattDescriptor Java object
:param status: status of the operation,
`GATT_SUCCESS` if the operation succeeds
"""
Tff7b72pass

Tff7b72def Td2a8ffon_descriptor_writeTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3descriptorTb4b4b4, Te6edf3statusTb4b4b4)Tb4b4b4:
T8b949e"""`descriptor_write` event handler

:param descriptor: BluetoothGattDescriptor Java object
:param status: status of the operation,
`GATT_SUCCESS` if the operation succeeds
"""
Tff7b72pass

Tff7b72def Td2a8ffon_rssi_updatedTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3rssiTb4b4b4, Te6edf3statusTb4b4b4)Tb4b4b4:
T8b949e"""`onReadRemoteRssi` event handler.
Event is dispatched at every RSSI update completed operation,
reporting a RSSI value for a remote device connection.

:param rssi: integer containing RSSI value in dBm
:param status: status of the operation,
`GATT_SUCCESS` if the operation succeeds
"""
Tff7b72pass

Tff7b72def Td2a8ffon_mtu_changedTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3mtuTb4b4b4, Te6edf3statusTb4b4b4)Tb4b4b4:
T8b949e"""`onMtuChanged` event handler
Event is dispatched when MTU for a remote device has changed,
reporting a new MTU size.

:param mtu: integer containing the new MTU size
:param status: status of the operation,
`GATT_SUCCESS` if the MTU has been changed successfully
"""
Tff7b72pass


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────